#include "SDL2/SDL_video.h"
#include "SDL2/SDL_render.h"

// 错误码
typedef enum {
    ERR_OK = 0,                  // 成功
    ERR_NOT_FOUND = 404,         // 任意资源不存在
    ERR_INVALID_PARAM = 400,     // 参数错误
    ERR_PERMISSION_DENIED = 403, // 无权限
    ERR_INTERNAL_ERROR = 500     // 内部错误
} ErrorCode;
// ✅错误码json标准数据格式响应：
// char *err_json_template = "{\"errno\":%d,\"result\":\"not found\",\"message\":\"%s not exist\"}";
// char err_buf[256];
// snprintf(err_buf, sizeof(err_buf), err_json_template, ERR_NOT_FOUND, "file");
// return cJSON_Parse(err_buf);


// 公共头文件，用于公共数据结构的定义，例如通用的struct、typedef
typedef struct {
    const char *icon;
    const char *text;
} HomeItem;

//Q: ✅访问获取第三方库内部私有的结构体对象：
// 由于lv_sdl_window_t 在 LVGL SDL 驱动内部定义即私有，头文件里没有，无法访问
// 但是这样就无法对窗口对象lv_sdl_window_t进行修改
// 因此可以拷贝该结构体的声明到项目的公共头文件common.h内，就可以将返回的数据进行面向对象了，
// 就可以访问到lv_sdl_window_t结构体的SDL_Window对象指针，可以操作 SDL_Window 了
typedef struct {
    SDL_Window * window; //显示对象的窗口指针
    SDL_Renderer * renderer;
#if LV_USE_DRAW_SDL == 0
    SDL_Texture * texture;
    uint8_t * fb1;
    uint8_t * fb2;
    uint8_t * fb_act;
    uint8_t * buf1;
    uint8_t * buf2;
    uint8_t * rotated_buf;
    size_t rotated_buf_size;
#endif
    float zoom;
    uint8_t ignore_size_chg;
} lv_sdl_window_t;
